#!/usr/bin/perl -w

#  FILE:   controlNT.pl
#  AUTHOR: JOSE A. ESQUIVEL
#  DATE:   12/07/2002 ver (4.0)
#
#  DESCRIPTION: Muestra la barra de herramientas para hacer las antoaciones

#inicializar:
require ("init.pl");
require ("dbData.pl");
require ("dbNotes.pl");
require ("dbDes.pl");
require ("dbOpe.pl");
require ("dbUser.pl");
require ("dbEvent.pl");
require ("gui.pl");

# Variables globales al CGI

local ($dbLenguaje, $IMG, %TEXTOS, %textos, $DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA, $ID_DESCRIPTION, $ID_AUTOR);
local ($URL_CANCELAR, $URL_RETORNO, $URL_AYUDA, %datos_autor);


sub _ImprimeJavaScript
{
    local ($paso, $valor_opcion, $url2) = @_;
    
    print <<EOF1;

<script language="Javascript">
<!--
    
   

    function ShowMsg(txt)
    {
	if (txt != "")
	{
	    alert(txt);
	}
	return (false);
    }

    function Mostrar_Nota(url, nombre)
    {
	var kiosk;
	kiosk = window.open(url, nombre, 'resizable=no, scrollbars=yes, status=0, width=300, height=420');
	return false;
    }

    function Mostrar_Privadas(url, nombre)
    {
        var kiosk;
        kiosk = window.open(url, nombre, 'resizable=no, scrollbars=yes, status=0, width=300, height=420');
        return false;
    }
    function Rellenar()
	{
	
	}


    

EOF1
    ;
    if ($paso eq "1")
    {
	print <<EOF2;
    function SubmitForm(opcion)
    {
	var frmTotal = window.parent.frames;
	
	if ((opcion == 2) && ($valor_opcion == 0))
	{
	    ShowMsg("$TEXTOS{'dato'.2}");
	    return;
	}
	document.forma.op.value = opcion;
	if (opcion == 2)
	{
	    frmTotal[1].location = "$url2";
	}
	document.forma.submit();
    }
EOF2
    ;
    }
    if ($paso eq "3A")
    {
	print <<EOF3;
    function SubmitForm( )
    {
	if (document.forma.login.value == "")
	{
	    ShowMsg("$textos{'inData3'.1}");
	    document.forma.login.focus();
	    return (false);
	}
	if (document.forma.password.value == "")
	{
	    ShowMsg("$textos{'inData4'.1}");
	    document.forma.password.focus();
	    return (false);
	}
	if (document.forma.nota.value == "")
	{
	    ShowMsg("$textos{'inData5'.1}");
	    document.forma.nota.focus();
	    return (false);
	}	
	if (document.forma.typeNote.value == "NULL")
	{
	    ShowMsg("$textos{'fObservations'.1}");
	    document.forma.typeNote.focus();
	    return (false);
	}	
	return true;
    }
EOF3
    ;
    }
    print <<EOF4;
// -->
</script>
EOF4
    ;

}

sub _ImprimeCabecera
{
    local ($bandera, $texto, $focus) = @_;

    print <<EOF1;
        <HTML>
        <HEAD>
EOF1
    ;
    $FASE = 1;
    if ($ID_ESTRUCTURA > 0)
    {
	$fase = 0;
    }
    &ponerTitulo("$titulo{general.1}", $DB_NOMBRE, $FASE, $ID_TEMA, $ID_ESTRUCTURA);
    print "</HEAD>";
    if ($bandera == 0)
    {
	print "\n<BODY BGCOLOR=\"#FFFFFF\" BACKGROUND=\"../" . $IMG . "/kc.gif\" $texto>";
    }
    else
    {
	print "\n<BODY BGCOLOR=\"#FFFFFF\" BACKGROUND=\"../img/kc.gif\" onload=\"alert(\'$texto\');document.forma.$focus.focus();\">";
    }
}


sub _ImprimeOcultosGenerales
{
    local ($noPaso, $opcion) = @_;
    local ($texto);
    
    $texto = "onsubmit = \"return SubmitForm( );\"";
    
    print <<EOF1;
        <FORM NAME="forma"  METHOD="POST" ENCTYPE="multipart/form-data" ACTION ="controlNT2.pl" $texto>
	     <INPUT TYPE="HIDDEN" NAME="b"  VALUE=$DB_NOMBRE>
	     <INPUT TYPE="HIDDEN" NAME="t"  VALUE=$ID_TEMA>
	     <INPUT TYPE="HIDDEN" NAME="s"  VALUE=$ID_ESTRUCTURA>
	     <INPUT TYPE="HIDDEN" NAME="d"  VALUE=$ID_DESCRIPCION>
	     <INPUT TYPE="HIDDEN" NAME="op" VALUE=$opcion>
	     <INPUT TYPE="HIDDEN" NAME="p" VALUE=$noPaso>
EOF1
    ;
}

sub _ImprimeCabeceraFormulario
{  
    local ($nombre_tema) = @_;
    local (%datos,$titulo, $urld);
   #Modificado 2-12-2003 -> A�dir URLD en datos de descripci� de documento.
    %datos = &get_data($DB_NOMBRE,"Description","idDescription",$ID_DESCRIPCION);
    $titulo=$datos{'idea'.1};
    $urld=$datos{'URLD'.1};
    
    print <<EOF1;
        <TABLE BGCOLOR=$spaceColors{'dark_'.1} WIDTH=100%>
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Autor:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $datos_autor{nameAuthor}</font></b> 
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Fecha:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $datos_autor{dayD}</font></b>   
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Email:</font></b>
	<TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">
		<A HREF="mailto:$datos_autor{email}">$datos_autor{email}</A></font></b>
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Tema:</font></b>
	<TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $nombre_tema</font></b>        


	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">T�ulo:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $titulo</font></b>

	<TR><TD COLSPAN = "2">
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"><a href="$urld" target="_blank">URLD</a></font></b>
<tr><TD COLSPAN = "2">
	<P><HR>
	  
	</TD>
EOF1
    ;
}

sub _ImprimeCabeceraFormularioVersion
{  
    local ($nombre_tema, $txtVer) = @_;

    print <<EOF1;
        <TABLE BGCOLOR=$spaceColors{'dark_'.1} WIDTH=100%>
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Autor:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $datos_autor{nameAuthor}</font></b> 
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Fecha:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $datos_autor{dayD}</font></b>   
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Email:</font></b>
	<TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">
		<A HREF="mailto:$datos_autor{email}">$datos_autor{email}</A></font></b>
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Tema:</font></b>
	<TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $nombre_tema</font></b>        <TR><TD COLSPAN = "2">
	<TR><TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">Comentario del Autor:</font></b>
        <TD>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2"> $txtVer</font></b> 
<TR><TD COLSPAN = "2">
	<P><HR>
	</TD>
EOF1
    ;
}

sub _ImprimeFormularioPaso1
{
    &ImprimeBarraHerramientas($dbLenguaje, 1, 100, $TEXTOS{'dato'.3}, 1, $URL_CANCELAR, $URL_RETORNO, $URL_AYUDA);
    print <<EOF1;
    <TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH=100%>
	  <TR><TD VALIGN="TOP">
	          
	          <BR><A HREF="javascript:SubmitForm(1)"><IMG SRC="../$IMG/note.gif" BORDER="0">
		      &nbsp;Area de anotaciones<P></A>
	  	  <BR><A HREF="javascript:SubmitForm(2)"><IMG SRC="../$IMG/version.gif" BORDER="0">
		  &nbsp;Area de versionado<P></A>
     </TABLE></table>
EOF1
    ;
}

sub _ImprimeBarra2
{
    local ($opcion) = @_;
    print "<TABLE BGCOLOR=$spaceColors{'bright_'.1} border=\"0\" width=\"100%\">";
    if ($opcion == 1)
    {
	$img_path = "../img/img_toolbar/";
	print   "\n<TD width=\"10\">";
	$imagen1 = $img_path . "add_note.gif";
	$imagen2 = $img_path . "add_note_sel.gif";
	&gui_declareIcon("add_note", $imagen1, $imagen2);
	print "<A HREF=\"javascript:document.forma.submit();\">";
	&gui_putIcon("add_note",$imagen1,"width=\"22\" height=\"21\" BORDER=\"0\"");
	print "</A></TD>";
    }
    print "</TABLE>";
}


sub _ImprimeFormularioPaso4A
{
local ($nombre_tema, %notas) = @_;

    $URL_AYUDA         =   &url_help($DB_NOMBRE,'consinfo.htm#consultar_anotaciones');

    &_ImprimeJavaScript("2A", 0);
    &_ImprimeCabecera(0);
    &_ImprimeOcultosGenerales (2, 1);
    &_ImprimeCabeceraFormulario($nombre_tema);
    &ImprimeBarraHerramientas($dbLenguaje, 1, 100,$TEXTOS{'dato'.4}, 1, $URL_CANCELAR, $URL_RETORNO, $URL_AYUDA);
	print <<EOF11;
<TABLE BGCOLOR= $spaceColors{'dark_'.1} WIDTH=\"100%\">
<TR><TD><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="4">ANOTACIONES PRIVADAS</font>
</TABLE>
EOF11
	;
    &_ImprimeBarra2(1);
    if ($notas{numRows} > 0)
    {
        print "<TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH=\"100%\"><TD>";

        for ($i=1; $i<=$notas{numRows};$i++)
        {
            $nombreW  = "nota" . $notas{idNote.$i};
            $titulo   = "$notas{'nAuthor'.$i}-$notas{'dayN'.$i}&nbsp;/&nbsp;[ $notas{idNote.$i} ]";
            $url_nota = $path."note.pl?b=$DB_NOMBRE&s=$ID_ESTRUCTURA&t=$ID_TEMA&d=$ID_DESCRIPCION";
            $url_nota = $url_nota . "&n=$notas{idNote.$i}";
            $votos    = "[ $notas{'favour'.$i} -  $notas{'against'.$i} ]";

            print <<EOF11;
            <TR><TD><b><A HREF="#" onclick="Mostrar_Nota('$url_nota','$nombreW');">$titulo</b></A>&nbsp;
            <TD ALIGN="CENTER"><FONT COLOR="red">$votos</FONT>
EOF11
    ;
        }
        print "</TABLE></form></table>";
   }
}

############################
# Listado de las anotaciones realizadas
# 08/03/05
# Fernando Lopez Colino
# Anadir opcion para ver las privadas
############################
sub _ImprimeFormularioPaso2A
{
    local ($nombre_tema, %notas) = @_;
    
    $URL_AYUDA         =   &url_help($DB_NOMBRE,'consinfo.htm#consultar_anotaciones');
    
    &_ImprimeJavaScript("2A", 0);
    &_ImprimeCabecera(0);
    &_ImprimeOcultosGenerales (2, 1);
    &_ImprimeCabeceraFormulario($nombre_tema);
    &ImprimeBarraHerramientas($dbLenguaje, 1, 100,$TEXTOS{'dato'.4}, 1, $URL_CANCELAR, $URL_RETORNO, $URL_AYUDA);
    &_ImprimeBarra2(1);
    if ($notas{numRows} > 0)
    {
	print "<TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH=\"100%\"><TD>";

	for ($i=1; $i<=$notas{numRows};$i++)
	{
	    $nombreW  = "nota" . $notas{idNote.$i};
	    $titulo   = "$notas{'nAuthor'.$i}-$notas{'dayN'.$i}&nbsp;/&nbsp;[ $notas{idNote.$i} ]"; 
	    $url_nota = $path."note.pl?b=$DB_NOMBRE&s=$ID_ESTRUCTURA&t=$ID_TEMA&d=$ID_DESCRIPCION";
	    $url_nota = $url_nota . "&n=$notas{idNote.$i}";
	    $votos    = "[ $notas{'favour'.$i} -  $notas{'against'.$i} ]";

	    print <<EOF11;
	    <TR><TD><b><A HREF="#" onclick="Mostrar_Nota('$url_nota','$nombreW');">$titulo</b></A>&nbsp;
	    <TD ALIGN="CENTER"><FONT COLOR="red">$votos</FONT>
EOF11
    ;
    	}
	print "</TABLE>"
   }

## Acceso a anotaciones privadas
	%notas = &traer_notas_privadas($DB_NOMBRE, $ID_DESCRIPCION);
	if ($notas{numRows} > 0)
	{	
		print <<EOFfj1;		
		<TABLE BGCOLOR= $spaceColors{'dark_'.1} WIDTH="100%"></form>		
		<TR><TD><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="3">Acceso a las anotaciones privadas</font></TD>
		<TR><TD><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="3">SOLO para el autor del documento</font></TD>
		<FORM name="NotasPrivadas" action="controlNT2.pl" method="post">
		<INPUT type="HIDDEN" name="b" value="$DB_NOMBRE">
		<INPUT type="HIDDEN" name="d" value="$ID_DESCRIPCION">
		<INPUT type="HIDDEN" name="p" value="4">
		<INPUT type="HIDDEN" name="t" value=$ID_TEMA>
		<INPUT type="HIDDEN" name="s" value=$ID_ESTRUCTURA>
		<TR><TD><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="3">Nombre:</font>  <INPUT type="text" name="author"></TD>
		<TR><TD><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="3">Password:</font><INPUT type="password" name="password"></TD>
		<TR><TD><INPUT type="submit" value="Acceder"></TD>
		</FORM>
		</TABLE>
		
EOFfj1
;		
	}
	print"</table>";
    
#	print "Anotaciones privaaadas";
    &_ImprimeFinal;
}

sub _ImprimeNotasB
{
    local (%notas) = @_;
    
    if ($notas{numRows} > 0)
    {

	print <<EOF10;
	<TR><TD COLSPAN=2><B>$textos{'subtitle'.1}
	<TR><TD><TD ALIGN="CENTER">$textos{'inData'.1}/<TD ALIGN="CENTER">$textos{'inData2'.1}</B>
EOF10
    ;

	for ($i=1; $i<=$notas{numRows};$i++)
	{
	    $nombreW  = "nota" . $notas{idNote.$i};
	    $titulo   = "$notas{'nAuthor'.$i}-$notas{'dayN'.$i}&nbsp;/&nbsp;[ $notas{idNote.$i} ]"; 
	    $url_nota = $path."note.pl?b=$DB_NOMBRE&s=$ID_ESTRUCTURA&t=$ID_TEMA&d=$ID_DESCRIPCION";
	    $url_nota = $url_nota . "&n=$notas{idNote.$i}";
	    $votos    = "[ $notas{'favour'.$i} -  $notas{'against'.$i} ]";
	   
	    print <<EOF11;
	    <TR><TD><b><A HREF="#" onclick="Mostrar_Nota('$url_nota','$nombreW');">$titulo</b></A>&nbsp;
            <TD ALIGN="CENTER"><INPUT TYPE="RADIO" NAME="$notas{idNote.$i}" VALUE = 1 CHECKED>
	    <TD ALIGN="CENTER"><INPUT TYPE="RADIO" NAME="$notas{idNote.$i}" VALUE = -1>
EOF11
    ;
	}
    }
}

sub _ImprimeFormularioPaso2B
{
    local ($nombre_tema, $comentario, %notas) = @_;

    $URL_AYUDA         =   &url_help($DB_NOMBRE,'consinfo.htm#consultar_versiones');
    
    $msg = "onload = \"document.forma.login.focus();\"";
    &_ImprimeJavaScript("2B", 0);
    &_ImprimeCabecera(0, $msg);
    &_ImprimeOcultosGenerales (2, 2);
    &_ImprimeCabeceraFormularioVersion($nombre_tema, $comentario);

    &ImprimeBarraHerramientas($dbLenguaje,1,110,$TEXTOS{'dato'.5},1,$URL_CANCELAR,$URL_RETORNO,$URL_AYUDA);
    print "<TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH=\"100%\"><TD>";
    &_ImprimeNotasB(%notas);
###Cambiado para pasar de 10 valores a 2 -> 07 - Octubre - 2003 
    $t = "\n<OPTION VALUE = 0 SELECTED>0 Min";
    foreach $i(1..4)
    {
	$t = $t . "\n<OPTION VALUE = $i>$i";
    }
    $t = $t . "\n<OPTION VALUE = 5>5 Max";    
#A sistituir por textos BD Contina no Contina    <TR><TD><TD ALIGN="CENTER">$textos{'inData'.1}/<TD ALIGN="CENTER">$textos{'inData2'.1}</B>
    print <<EOF1;
    <TR><TD COLSPAN="3">
	<P><HR>
	</TD>    
    <TR><TD><TD ALIGN="CENTER">$textos{'fFavour'.1}/<TD ALIGN="CENTER">$textos{'fAgainst'.1}</B>
    <TR><TD><BR><B>$textos{'inData3'.1}</B>
            <TD ALIGN="CENTER"><INPUT TYPE="RADIO" NAME="GC" VALUE = 1 CHECKED>
	    <TD ALIGN="CENTER"><INPUT TYPE="RADIO" NAME="GC" VALUE = 0>	
    <TR><TD><BR><B>$textos{'inData4'.1}</B> 
	<TD COLSPAN="2"><BR><SELECT NAME="GM">
		    $t
	        </SELECT>    	
    <TR><TD COLSPAN="3">
	<P><HR>
	</TD>    
    <TR><TD><BR><BR>$textos{'inData5'.1}
    <TR><TD>        <INPUT TYPE="TEXT"     NAME=\"login\"    SIZE=25  MAXLENGTH=100></TD>
    <TR><TD><BR><BR>$textos{'inData6'.1}
    <TR><TD>        <INPUT TYPE="PASSWORD" NAME=\"password\" SIZE=25  MAXLENGTH=100></TD>
    
EOF1
    ;
    print "</TABLE></TABLE></form>";
    &_ImprimeFinal;
}



###################################
# Formulario para insertar anotaciones
###################################
sub _ImprimeFormularioPaso3A
{
    local ($nombre_tema, $bandera, $msg, $focus, $login, $password, $typeNote, $nota, %notas) = @_;
    local (%dataNotes, %tablaGeneral);

    %dataNotes = &get_NoteType($DB_NOMBRE);

    &_ImprimeJavaScript("3A", 0);
    if ($bandera == 0)
    {
	$msg = "onload = \"document.forma.login.focus();\"";
    }
    &_ImprimeCabecera($bandera, $msg, $focus);
    &_ImprimeOcultosGenerales (3, 1);
    &_ImprimeCabeceraFormulario($nombre_tema);
    &ImprimeBarraHerramientas($dbLenguaje, 1, 110,$textos{'title'.1}, 1, $URL_CANCELAR, $URL_RETORNO, $URL_AYUDA);
    print <<EOF1;
    <TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH="100%">
        <TR><TD>$textos{'subtitle'.1}<TR>
            <TD><INPUT TYPE="TEXT"     NAME="login"  value = "$login" SIZE=25  MAXLENGTH=100></TD>
	<TR><TD>$textos{'inData'.1} <TR>
            <TD><INPUT TYPE="PASSWORD" NAME="password" value = "$password" SIZE=25  MAXLENGTH=100></TD>

	<TR><TD>$textos{'inData10'.1} <TR><TD><SELECT NAME="typeNote">
EOF1
    ; 
    print "<OPTION width=35 VALUE=\"NULL\"> \n";

    # Mostrar cada opcion
    foreach $i (1 .. $dataNotes{numRows})
    {
      $typeNote = $dataNotes{typeNote.$i};
      $descriptionNote = $dataNotes{descriptionNote.$i};

        print "<OPTION width=35 VALUE=\"$typeNote\"> $descriptionNote \n";
    }
    print "\n</SELECT></TD>";
####################
# 08-03-5
# Anotaciones privadas
# Fernando Lopez Colino
##################
	%tablaGeneral = &get_data($DB_NOMBRE,'GeneralData','idGeneralData',1);
	$fjq = $tablaGeneral{privateNotes.1};
	if ($fjq == 1)
	{
		print "<TR><TD>Anotacion solo para el autor</TD>";
		print "<TR><TD>Privada<INPUT TYPE=\"RADIO\" NAME=\"privada\" value = \"1\"></TD>";
		print "<TR><TD>Publica<INPUT TYPE=\"RADIO\" NAME=\"privada\" value = \"0\" checked></TD>";
	}

    print <<EOF1_1;

        <TR><TD>$textos{'inData2'.1}<TR>
            <TD><TEXTAREA              NAME="nota" ROWS=15 COLS=30>$nota</TEXTAREA></TD>
    </TABLE></table></form>
EOF1_1
    ; 
    &_ImprimeFinal;
}


sub _ImprimeMensaje
{
    local ($bandera, $nombre_tema, $msg, $error) = @_;

    $color = "green";
    if ($error == 1)
    {
	$color = "red";
    }
    if ($bandera == 1)
    {
 print <<EOF1;
    <HTML>
    <HEAD>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" BACKGROUND="../" . $IMG . "/kc.gif">
    <FORM NAME="forma"  METHOD="GET"  ACTION ="inter.pl" TARGET="inform">
	     <INPUT TYPE="HIDDEN" NAME="b" VALUE=$DB_NOMBRE>
	     <INPUT TYPE="HIDDEN" NAME="t" VALUE=$ID_TEMA>
	     <INPUT TYPE="HIDDEN" NAME="s" VALUE=$ID_ESTRUCTURA>
	     <INPUT TYPE="HIDDEN" NAME="d" VALUE=$ID_DESCRIPCION>
EOF1
    ;
    }
    else
    {
	print <<EOF2;
    <HTML>
    <HEAD>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" BACKGROUND="../" . $IMG . "/kc.gif">
    <FORM NAME="forma"  METHOD="POST"  ACTION ="controlNT2.pl">
	     <INPUT TYPE="HIDDEN" NAME="b" VALUE=$DB_NOMBRE>
	     <INPUT TYPE="HIDDEN" NAME="t" VALUE=$ID_TEMA>
	     <INPUT TYPE="HIDDEN" NAME="s" VALUE=$ID_ESTRUCTURA>
	     <INPUT TYPE="HIDDEN" NAME="d" VALUE=$ID_DESCRIPCION>
	     <INPUT TYPE="HIDDEN" NAME="p" VALUE=1>
	     <INPUT TYPE="HIDDEN" NAME="op" VALUE=1>
EOF2
    ;
    }
    &_ImprimeCabeceraFormulario ($nombre_tema);
    &ImprimeBarraHerramientas($dbLenguaje,1,0001,$TEXTOS{'dato'.7},1,$URL_CANCELAR,$URL_RETORNO,$URL_AYUDA);
print <<EOFEND1;
    <TABLE BGCOLOR=$spaceColors{'bright_'.1} WIDTH=100%>
	<TD ALIGN=CENTER><FONT COLOR="$color">        
	<B> $msg </B></FONT>
    </TABLE></table>
    </FORM>
    </body>
EOFEND1
  ;

}


sub _ImprimeFinal
{  
    print <<EOF1;       
	</BODY>
	</HTML>
EOF1
    ;
}

sub _ProcedimientoPost
{
    local ($directorio, $pathDocumentos, $urlServidor);
    local (%datosTema, $opcion, $nuevo, $formulario);
    
    use CGI;

    $q = new CGI;

    #Se obtienen los datos generales que han llegado al formulario
   
    $DB_NOMBRE       = $q->param("b");
    $ID_TEMA         = $q->param("t");
    $ID_ESTRUCTURA   = $q->param("s");
    $ID_DESCRIPCION  = $q->param("d");
    $noPaso          = $q->param("p");
    $opcion          = $q->param("op");
#    print "$DB_NOMBRE $ID_TEMA $ID_ESTRUCTURA $ID_DESCRIPCION $noPaso $opcion";

    #Obteniendo datos del tema y lenguaje a manejar
    ($dbLenguaje, $IMG) = &get_language($DB_NOMBRE);
    %datosTema = &_ObtenerDatosTema($DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA);
    
    if ($ID_ESTRUCTURA == 0)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
    }
    if ($PHASE == 1)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_ESTRUCTURA";
    } 

    $URL_CANCELAR     =  "$inform\" TARGET=\"inform";
    $back             =  "inter.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA&d=$ID_DESCRIPCION";
    $URL_RETORNO      =  "$back\"   TARGET=\"inform";
    $URL_AYUDA        =   &url_help($DB_NOMBRE,'consinfo.htm#consultar_documentos');

   
    %datos_autor = &get_descriptionAuthor($DB_NOMBRE, $ID_DESCRIPCION);

    %TEXTOS = &get_text($dbLenguaje, "'controlNT2.pl'");
    
    #Viene de la primera pantalla
    if ($noPaso == 1)
    {
	#Se selecciono �ea de anotaciones
	if ($opcion == 1)
	{
	    %textos   = &get_data($dbLenguaje, "MyForm", "name", "\'add-notes.pl\'");
	    #traer anotaciones de la descripcion
	    %notas = &traer_notas_publicas($DB_NOMBRE, $ID_DESCRIPCION);
	    $back =  "controlNT2.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA&d=$ID_DESCRIPCION";
	    $URL_RETORNO =  "$back";
	    &_ImprimeFormularioPaso2A($datosTema{'nameTopic'.1}, %notas);
	}
	#Se selecciono �ea de versionado
	else
	{
	    %textos = &get_data($dbLenguaje, "MyForm", "name", "\'vote-version.pl\'");
	    #Traer los datos de la propuesta de versi�
	    %activeVersion  = &get_activeVersion ($DB_NOMBRE, $ID_DESCRIPCION);
	    #traer anotaciones de la descripcion
	    %notas = &traer_notas_publicas($DB_NOMBRE, $ID_DESCRIPCION);
	    &_ImprimeFormularioPaso2B($datosTema{'nameTopic'.1}, $activeVersion{note}, %notas);
	}
    }
    if ($noPaso == 2)
    {
	#Se selecciono �ea de anotaciones
	if ($opcion == 1)
	{
	    %textos   = &get_data($dbLenguaje, "MyForm", "name", "\'add-notes.pl\'");
	    $back =  "controlNT2.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA&d=$ID_DESCRIPCION&p=1&op=1";
	    $URL_RETORNO =  "$back";
	    &_ImprimeFormularioPaso3A($datosTema{'nameTopic'.1}, 0, "", "", "", "", "", "", %notas);
	}
	#Se selecciono �ea de versionado
	else
	{
	    %textos = &get_data($dbLenguaje, "MyForm", "name", "\'vote-version.pl\'");
	    #Verificando permisos para votar la version
	    $login    = $q->param("login");
	    $password = $q->param("password");
	    ($puede, $idVotante, $msg)=&verificaPermisos($DB_NOMBRE,$ID_TEMA,$ID_DESCRIPCION,$login,$password);
	    $gCont = $q->param("GC");
	    $gMejo = $q->param("GM");

	    if ($puede == 0)
	    {
		#traer anotaciones de la descripcion
		%notas = &traer_notas_publicas($DB_NOMBRE, $ID_DESCRIPCION);
		#traer version activa
		%VersionActiva  = &get_activeVersion ($DB_NOMBRE, $ID_DESCRIPCION);
		&save_VersionVotation($DB_NOMBRE,$ID_DESCRIPCION,$VersionActiva{idVersion},$ID_TEMA,$idVotante, $gCont, $gMejo);
		&insert_historic ($DB_NOMBRE, "\'VoteVer\'", $idVotante, $ID_TEMA, $ID_DESCRIPCION, $VersionActiva{idVersion});
		foreach $i(1..$notas{numRows})
		{
		    $idNota = $notas{idNote.$i}; 
		    $voto   = $q->param("$idNota");
		    &vota_anotacion($DB_NOMBRE, $idVotante, $idNota, $voto, $ID_TEMA, 'CONTINUITY');
		}
		#Notificacion del evento
		$Datos{Accion} 	        = 32;     #Accion 32 es sVoteVersion
		$Datos{Autor}		= $idVotante;
		$Datos{Fecha}		= &get_date();
		$Datos{Valor1} 	        = $gCont;
		$Datos{Valor2}          = $gMejo;
		$Datos{Tema}            = $ID_TEMA;
		$Datos{Estructura}      = $ID_ESTRUCTURA;
		$Datos{Descripcion}	= $ID_DESCRIPCION;
#		print " $Datos{Accion}, $Datos{Autor},$Datos{Fecha}, $Datos{Valor1},$Datos{Valor2} ,	$Datos{Tema},	$Datos{Estructura},$Datos{Descripcion}: ";

		&notifyEventG ($DB_NOMBRE, %Datos);
		#Fin de la notificacion del evento
	    }
	    
	    &_ImprimeMensaje(1, $datosTema{'nameTopic'.1}, $msg, $puede);
	}
    }
    if ($noPaso == 3)
    {
	#Se selecciono �ea de anotaciones
	if ($opcion == 1)
	{
	    #Se leen par�etros
	    $privateNote = 0;
	    $login  = $q->param("login");
	    $pwd    = $q->param("password");
	    $nota   = $q->param("nota");
	    $typeNote   = $q->param("typeNote");
	    if (defined($q->param("privada")) && ($q->param("privada") ne "null"))
	    {
	    	$privateNote = $q->param("privada");
	}
	    
		 
	    %textos   = &get_data($dbLenguaje, "MyForm", "name", "\'add-notes.pl\'");
	    #Se identifica al usuario y sus derechos
	    ($errortxt, $error, $newuser) = &_UserIdentification($login, $pwd);
	    if (($error == 1) || ($newuser == 1))
	    {
		&_ImprimeMensaje(2, $datosTema{'nameTopic'.1}, $textos{'inData7'.1}, $error);
	    }
	    else
	    {
		# Hubo un error de contrase� ?
		if ($errortxt eq "\'errorPWD\'")
		{
		    #Se obtiene el mensaje a mostrar cuando esta se cargue nuevamente
		    %dMsgC = &get_data($dbLenguaje, "Message", "name", "\'errorData\'");
		    &_ImprimeFormularioPaso3A($datosTema{'nameTopic'.1}, 1, $dMsgC{'txt'.1},"password",$login,"",$typeNote,$typeNote, $nota,%notas);
		}
		else
		{
		    #Ver si la base de datos esta ocupada:
		    $busy = &get_busy($DB_NOMBRE);
		    if ($busy != 0)
		    {
			#Se obtiene el mensaje a mostrar cuando esta se cargue nuevamente
			%dMsgC = &get_data($dbLenguaje, "Message", "name", "\'busyDB\'");
			&_ImprimeFormularioPaso3A($datosTema{'nameTopic'.1}, 1, $dMsgC{'txt'.1},"password",$login,"",$typeNote,$nota,%notas);
		    }
		    else
		    {
			#sustituimos las comillas simples por otro caracter
			$nota =~ s/\'/\'\'/g;					
			$idNota = &guarda_anotacion($DB_NOMBRE, $ID_AUTOR, $ID_DESCRIPCION, $ID_TEMA, $typeNote,$nota,$privateNote);
			&insert_historic($DB_NOMBRE,"\'AddNote\'",$ID_AUTOR,$ID_TEMA,$ID_DESCRIPCION,$idNota);
			#($nota, $nAuthor, $dayN, $idnAuthor) = &traer_nota($DB_NOMBRE, $idNota);
			$titulo = "$nAuthor - $dayN";
		       
			#Notificacion de evento
			$Datos{Accion} 	         =  12;     #Accion 12 es sAddNote
			$Datos{Autor}		 = $ID_AUTOR;
			$Datos{Fecha}		 = &get_date();
			$Datos{Titulo}           = $titulo;
			$Datos{Tema}             = $ID_TEMA;
			$Datos{Estructura}       = $ID_ESTRUCTURA;
			$Datos{Descripcion}	 = $ID_DESCRIPCION;
			
			&notifyEvent ($DB_NOMBRE, %Datos);
			#Fin de notificacion de eventos
			
			&_ImprimeMensaje(2, $datosTema{'nameTopic'.1}, $textos{'inData6'.1}, $error);
		    }
		}
	    }   
	}
    }
    if ($noPaso== 4)
    {
		#mostrar las anotaciones hechas solo para el autor
		#similar al formulario 2A
		%textos   = &get_data($dbLenguaje, "MyForm", "name", "\'add-notes.pl\'");
		$nombreUsuario = $q->param("author");
                $contrasena = $q->param("password");
		$autentificado = 0;
		
		%auxiliarfj = &get_data($DB_NOMBRE,"Description","idDescription",$ID_DESCRIPCION);
		%auxiliarfj = &get_data($DB_NOMBRE,"Author","idAuthor",$auxiliarfj{'idAuthor'.1});
		if ($nombreUsuario eq $auxiliarfj{"nameAuthor".1})
		{

			if ($contrasena eq $auxiliarfj{"password".1})
			{
				$autentificado = 1;
			}
		}
		
		if ($autentificado == 1)
		{


	            #traer anotaciones de la descripcion
        	    %notas = &traer_notas_privadas($DB_NOMBRE, $ID_DESCRIPCION);
	            $back =  "controlNT2.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA&d=$ID_DESCRIPCION";
        	    $URL_RETORNO =  "$back";
		$nombreUsuario = $q->param();
		$contrasena = $q->param();
	            &_ImprimeFormularioPaso4A($datosTema{'nameTopic'.1}, %notas);
		}
		else
		{
			&_ImprimeJavaScript("2A", 0);
			&_ImprimeCabecera(0);
			&_ImprimeOcultosGenerales (2, 1);
			&_ImprimeCabeceraFormulario($datosTema{'nameTopic'.1});
			&ImprimeBarraHerramientas($dbLenguaje, 1, 100,$TEXTOS{'dato'.4}, 1, $URL_CANCELAR, $URL_RETORNO, $URL_AYUDA);
			print <<EOFfj1;
			<TABLE BGCOLOR= $spaceColors{'bright_'.1} WIDTH=\"100%\"><TD>
			<TR><TD><font size=2>No estas autorizado</font></td></TABLE>
			</table></form></table>
EOFfj1
;
	
		}

		#comprobar la autentificacion
   }	
}



sub _ProcedimientoGet
{
    local ($noPaso, %input, %datosTema);
    
    #Se procesa la entrada al script
    %input = &parse_input;

    #Se obtienen los datos de entrada
    $DB_NOMBRE      = $input{b};  
    $ID_TEMA        = $input{t};
    $ID_ESTRUCTURA  = $input{s};
    $ID_DESCRIPCION = $input{d};
   
    #Obteniendo datos del tema y lenguaje a manejar
    ($dbLenguaje, $IMG) = &get_language($DB_NOMBRE);

    %datosTema = &_ObtenerDatosTema($DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA);
    
    if ($ID_ESTRUCTURA == 0)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
    }
    if ($ID_ESTRUCTURA != 0)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_ESTRUCTURA";
    }
 
    $URL_AYUDA         =   &url_help($DB_NOMBRE,'consinfo.htm#consultar_documentos');
    
    $noPaso = $input{p};
    
    if ($noPaso == 1) #Viene de una ventana
    {
	$back =  "controlNT2.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA&d=$ID_DESCRIPCION";
	$URL_RETORNO =  "$back";
	$URL_CANCELAR     =  "$inform\" TARGET=\"inform";
	%textos   = &get_data($dbLenguaje, "MyForm", "name", "\'add-notes.pl\'");
	#traer anotaciones de la descripcion
	%notas = &traer_notas_publicas($DB_NOMBRE, $ID_DESCRIPCION);
	&_ImprimeFormularioPaso2A($datosTema{'nameTopic'.1}, %notas);
	return;
    }

    $URL_RETORNO       =  "$inform\" TARGET=\"inform";
    $URL_CANCELAR      =  "$inform\" TARGET=\"inform";

    $noPaso = 1;

    %datos_autor = &get_descriptionAuthor($DB_NOMBRE, $ID_DESCRIPCION);

    #Verificando si la descripci� tiene propuesta una nueva versi�
    %versionActiva  = &get_activeVersion ($DB_NOMBRE, $ID_DESCRIPCION);
    
    %TEXTOS = &get_text($dbLenguaje, "'controlNT2.pl'");

    &_ImprimeJavaScript("1", $versionActiva{idVersion}, $versionActiva{URLV});
    &_ImprimeCabecera(0);
    &_ImprimeOcultosGenerales ($noPaso, 0);
    &_ImprimeCabeceraFormulario($datosTema{'nameTopic'.1});
    &_ImprimeFormularioPaso1;
    &_ImprimeFinal;
}

sub _Main
{
    #Imprime cabecera
    &print_header;
    if ('POST' eq $ENV{'REQUEST_METHOD'})
    {
	&_ProcedimientoPost;
    }  
    else
    {
	&_ProcedimientoGet;
    }
}

#******************************************************



# Funci� Main
&_Main;




#******************************************************

# Funciones auxiliares
sub _ObtenerDatosTema
{
    local($dbNombre, $idTema, $idEstructura) = @_;
    local(%dTema);

    #Se obtienen los datos del tema en cuestion
    if ($idEstructura > 0)
    {
	%dTema = &get_data($dbNombre, "Struct", "idTopic", $idTema);
    }
    else
    {
	%dTema = &get_data($dbNombre, "Topic", "idTopic", $idTema);
    }

    return %dTema;
  
}



sub _UserIdentification
{
    local ($login, $pwd) = @_;
    local ($errortxt, $exist, $correct, $approved, $windowerror, $newuser, %dAuthor);
    
    #Se incializan variables
    $exist       = 0;
    $correct     = 0;
    $approved    = 0;
    $rights      = 0;
    $windowerror = 0;
    $newuser     = 0;
    $errortxt    = "";

    #Se mira si el usuario tiene sus datos en la BdD
    %dAuthor = &get_data($DB_NOMBRE, "Author", "nameAuthor", "\'$login\'");

    #Existe el autor ?
    if ($dAuthor{numRows} > 0)
    {
	#El autor existe
	$exist = 1;
	#Se obtiene el identificador del autor
	$ID_AUTOR = $dAuthor{'idAuthor'.1};
	#El password es correcto ?
	if ($dAuthor{'password'.1} eq $pwd)
	{
	    #El password es correcto
	    $correct = 1;
	}
    }
    #El usuario entro anteriormente pero su password no es correcto ?
    if (($exist == 1) && ($correct == 0))
    {
	$errortxt = "\'errorPWD\'";
	return ($errortxt, $windowerror, $newuser);
    }
    #Revisar permiso para ejecutar la  operaci� de agregar archivos
   
    $approved = &operation_approved ($DB_NOMBRE, "\'$login\'", "AddDes");
    
    if ($approved == 0)
    {
	$windowerror = 1;
	$errortxt = "\'nusf\'";
    }
    else
    {
	$rights   = 1;
    }
    
    #Si es la primera vez que entra y tiene permisos para hacer la operaci�
    if (($exist == 0) && ($rights == 1))
    {
	$approved = &operation_approved ($DB_NOMBRE, "\'$login\'", "AddNewUser");
	if ($approved == 0)
	{
	    $windowerror = 1;
	    $errortxt = "\'nusf\'";
	}
	else
	{
	    $newuser = 1;
	}
    }
    return ($errortxt, $windowerror, $newuser);
}


sub verificaPermisos
{
    local ($dbNombre, $idTema, $idDescripcion, $login, $password) = @_;
    
    #Traer lista de expertos en el tema
    %expertos = &get_expertsOnTopic($dbNombre, $idTema); 
    %expertos = &get_whoVotDoc($dbNombre, $idTema);

    $CORRECTO = 0; $EXISTE = 0;
    %dAutor = &get_data($dbNombre, "Author", "nameAuthor", "\'$login\'");
    if ($dAutor{numRows} > 0)
    {
	#Existe el author
	$EXISTE = 1;
	$idAutor = $dAutor{'idAuthor'.1};
	if ($dAutor{'password'.1} eq $password)
	{
	    $CORRECTO = 1;
	}
    }
    
    if (($CORRECTO == 1) && ($EXISTE == 1))
    {
	#Verificando que este en la lista
	$PUEDE = 1;
	foreach $i(1..$expertos{numRows})
	{
	    if ($expertos{idAuthor.$i} == $idAutor)
	    {
		$PUEDE = 0;
	    }
	}
	#Traer datos de la descripcion
	%des = &get_data($dbNombre, "Description", "idDescription", "$idDescripcion");
	if ($des{"idAuthor".1} == $idAutor)
	{
	    $PUEDE = 1;
	}
	$msg = $textos{'inData7'.1};
	if ($PUEDE == 1)
	{
	    $msg = $textos{'inData8'.1};
	}
    }
    else
    {
	$PUEDE = 1;
	$msg   = $textos{'inData9'.1};    
    }
    
    return ($PUEDE, $idAutor, $msg);

} 
